﻿//-----------------------------------------------------------------------------------------
// <copyright file="BlipService.Notice.cs" company="Jakub Florczyk (www.jakubflorczyk.pl)">
//      Copyright © 2009 Jakub Florczyk (www.jakubflorczyk.pl)
//      http://blipnet.codeplex.com/
// </copyright>
//-----------------------------------------------------------------------------------------

namespace BlipNet
{
    using System;
    using System.Globalization;

    /// <summary>
    /// Blip serwis.
    /// </summary>
    public partial class BlipService
    {
        /// <summary>
        /// Zwraca powiadomienia o podanym id.
        /// </summary>
        /// <param name="id">Identyfikator powiadomienia.</param>
        /// <returns>Wybrane powiadomienie.</returns>
        public Message GetNotice(int id)
        {
            return RequestGet<Message>(String.Format(CultureInfo.InvariantCulture, "/notices/{0}", id));
        }

        /// <summary>
        /// Zwraca najnowsze powiadomienia bieżącego użytkownika.
        /// </summary>
        /// <param name="limit">Limit ilości.</param>
        /// <returns>Najnowsze powiadomienia.</returns>
        public Message[] GetNotices(int limit)
        {
            return RequestGetMany<Message>(String.Format(CultureInfo.InvariantCulture, "/notices?limit={0}", limit));
        }

        /// <summary>
        /// Pobiera wszytkie powiadomienia bieżącego użytkownika nowsze od powiadomienia z podanym id.
        /// </summary>
        /// <param name="id">Indetyfikator powiadomienia.</param>
        /// <returns>Wszytkie powiadomienia.</returns>
        public Message[] GetNoticesSince(int id)
        {
            return RequestGetMany<Message>(String.Format(CultureInfo.InvariantCulture, "/notices/since/{0}", id));
        }

        /// <summary>
        /// Zwraca najnowsze powiadomienia do wszystkich użytkowników.
        /// </summary>
        /// <param name="limit">Limit ilości.</param>
        /// <returns>Najnowsze powiadomienia.</returns>
        public Message[] GetAllNotices(int limit)
        {
            return RequestGetMany<Message>(String.Format(CultureInfo.InvariantCulture, "/notices/all?limit={0}", limit));
        }

        /// <summary>
        /// Zwraca najstarsze powiadomienia do wszystkich użytkowników nowszych od powiadomienia z podanym id.
        /// </summary>
        /// <param name="limit">Limit ilości.</param>
        /// <param name="id">Indetyfikator powiadomienia.</param>
        /// <returns>Najstarsze powiadomienia.</returns>
        public Message[] GetAllNotices(int limit, int id)
        {
            return RequestGetMany<Message>(String.Format(CultureInfo.InvariantCulture, "/notices/{1}/all?limit={0}", limit, id));
        }

        /// <summary>
        /// Zwraca ostatnie powiadomienia podanego użytkownika.
        /// </summary>        
        /// <param name="login">Login użytkownika.</param>
        /// <param name="limit">Limit ilości.</param>
        /// <returns>Ostatnie powiadomienia.</returns>
        public Message[] GetUserNotices(string login, int limit)
        {
            return RequestGetMany<Message>(String.Format(CultureInfo.InvariantCulture, "/users/{0}/notices?limit={1}", login, limit));
        }

        /// <summary>
        /// Zwraca powiadomienia podanego użytkownika nowsze od powiadomienia z podanym id.
        /// </summary>
        /// <param name="login">Login użytkownika.</param>
        /// <param name="id">Indetyfikator powiadomienia.</param>
        /// <returns>Powiadomienia użytkownika.</returns>
        public Message[] GetUserNoticesSince(string login, int id)
        {
            return RequestGetMany<Message>(String.Format(CultureInfo.InvariantCulture, "/users/{0}/notices/{1}/since", login, id));
        }        
    }
}